import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style

// 全局前置路由守卫
// 引入
import router from '@/router'
import store from '@/store'
router.beforeEach(async(to, from, next) => {
  // 设置网页标题与要去的页面的title相同
  document.title = `人资项目-${to.meta.title}`
  // 开启进度条
  // NProgress.start()
  // 需要通过判断是否携带token来决定放不放行
  const token = store.state.user.token
  // 白名单
  const whiteList = ['/login', '/404']
  if (token) {
    // 如果有 那么判断是不是去登录页的 如果不是 放行 如果是 强制去首页
    if (to.path === '/login') {
      console.log('已经登录,去首页')
      next('/')
      NProgress.done() // 进到首页以后 关闭进度条
    } else {
      console.log('已经登录,放行')
      // 获取首页用户基本信息
      // 必须通过await 来确保获取完再跳转
      // 判断vuex 中是否有userinfo 因为用户信息只获取一次就可以了
      if (!store.state.user.userInfo) {
        await store.dispatch('user/getUserInfo')
      }

      next()
    }
  } else {
    // 没有token 也就是没登录 那么,判断要去的页面是否需要权限,也就是是否在白名单里
    if (whiteList.includes(to.path)) {
      // 白名单内
      next()
    } else {
      console.log('没有权限,登录')
      next('/login')
      NProgress.done()
    }
  }
})

// 全局后置路由守卫
router.afterEach(() => {
  NProgress.done()
})
